package ru.lenwp.operation.admin;

import ru.lenwp.util.ConsoleUtil;
import ru.lenwp.context.Context;
import ru.lenwp.model.OperationInfo;
import ru.lenwp.model.User;
import ru.lenwp.operation.Operation;

/**
 * @author: sk_y
 */
public class BlockUserOperation implements Operation {

    private final Context context;

    private final ShowUsersOperation showUsersOperation;

    public BlockUserOperation(Context context) {
        this.context = context;
        this.showUsersOperation = new ShowUsersOperation(context);
    }

    @Override
    public OperationInfo execute() {
        System.out.println("Введите какого пользователя желаете заблокировать/разблокировать.");
        showUsersOperation.execute();
        User user = context.getUserDao().allUser().get(ConsoleUtil.askMenuNumber());
        System.out.println("Введите 1, если 'Заблокировать'");
        System.out.println("Введите 2, если 'Разблокировать'");
        System.out.println("Введите 3, для выхода");
        applyBlockOperation(user);
        showUsersOperation.execute();
        return null;
    }

    private void applyBlockOperation(User user) {
        switch (ConsoleUtil.askMenuNumber()) {
            case 3:
                break;
            case 1:
                user.setBlockUser(true);
                break;
            case 2:
                user.setBlockUser(false);
                break;
            default:
                throw new RuntimeException("Не верно введен тип пользователя ");
        }
    }

    @Override
    public String getOperationName() {
        return "Блокировка пользователя";
    }
}
